05/01/2025 - 11/01/2025

06/01/2025 15:03

By changing this line iov --> __iov in the 2017 driver (Xilinx Answer 65444), I was able to get it to compile on ALMA9

#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)
static ssize_t sg_read_iter (struct kiocb *iocb, struct iov_iter *from)
{
    dbg_sg("%s()\n", __func__);
    return sg_aio_read_write(iocb, from->__iov, from->nr_segs,
                iocb->ki_pos, 0);
}

static ssize_t sg_write_iter (struct kiocb *iocb, struct iov_iter *iter)
{
    dbg_sg("%s()\n", __func__);
    return sg_aio_read_write(iocb, iter->__iov, iter->nr_segs,
                iocb->ki_pos, 1);
}
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,15,0)
static ssize_t sg_read_iter (struct kiocb *iocb, struct iov_iter *from)
{
    dbg_sg("%s()\n", __func__);
    return sg_aio_read_write(iocb, from->__iov, from->nr_segs,
                iocb->ki_pos, 0);
}

static ssize_t sg_write_iter (struct kiocb *iocb, struct iov_iter *iter)
{
    dbg_sg("%s()\n", __func__);
    return sg_aio_read_write(iocb, iter->__iov, iter->nr_segs,
                iocb->ki_pos, 1);
}

This restored the rates I was seeing using this driver on CentOS7, even when using my C++ library:
fa9aa727f52a0039c91dd12382e7632f.png

I was also able to get about a 20% rate boost when using 2 channnels in midas (from ~1GB/s --> 1.2GB/s)
a345f2b8f51a9e9d1a83917a9c48775a.png